import time, random

user = {'name': None, 'timeout': 3, 'login_time': None}


def timeout_func(func):
    def wrapper(*args, **kwargs):
        # 如果用户登陆，判断登录时长是否小于超时时间

        if user["name"]:

            timeout = time.time() - user['login_time']

            # 登录时长小于超时时间，不需重新登录

            if timeout < user['timeout']:
                print("123")
                func(*args, **kwargs)
            else:
                if check_login():
                    func(*args, **kwargs)
            # 如果用户未登录/超出超时时间需要重新登录

        else:
            # 用户未登录
            if check_login():
                func(*args, **kwargs)

    return wrapper


def check_login():
    name = input('请输入用户名:')

    password = input("请输入密码:")
    if name == 'python' and password == '123':
        # 记录用户名与超时时间

        user['name'] = name

        user['login_time'] = time.time()
        return True
    else:
        print("用户名或密码错误")
        return False


@timeout_func
def login():
    time.sleep(random.randrange(3))

    print("欢迎登陆")


@timeout_func
def index():
    time.sleep(random.randrange(3))

    print("欢迎来到首页")


login()
time.sleep(4)
index()
